// pages/userInfo/changeMyInfo.js
const app = getApp()
import api from '../../config/api'
import path from '../../config/path'

Page({
  data: {
    userInfo: {},
    tempUserInfo: {},
    userId: null,
    isEditing: false
  },

  onLoad(options) {
    console.log('进入修改用户信息页面，参数:', options)
    if (options && options.id) {
      this.setData({
        userId: options.id
      })
      this.fetchUserDetail(options.id)
    } else {
      const userInfo = wx.getStorageSync('userInfo')
      if (userInfo && userInfo.id) {
        this.setData({
          userId: userInfo.id
        })
        this.fetchUserDetail(userInfo.id)
      } else {
        wx.showToast({
          title: '用户信息获取失败',
          icon: 'none'
        })
        setTimeout(() => {
          wx.navigateBack()
        }, 1500)
      }
    }
  },

  // 获取用户详细信息
  fetchUserDetail(userId) {
    wx.showLoading({ title: '加载中...' })
    
    api.get('user', `${path.path.getUserInfo}?id=${userId}`).then(res => {
      wx.hideLoading()
      console.log('用户详情接口返回:', res)
      
      if (res.code === 200) {
        const userData = res.data || {}
        const formattedUser = {
          id: userData.id,
          username: userData.username,
          phone: userData.phone,
          email: userData.email,
          realName: userData.realName,
          idCard: userData.idCard,
          role: userData.role,
          avatar: userData.avatar
        }
        
        this.setData({
          userInfo: formattedUser,
          tempUserInfo: { ...formattedUser }
        })
      } else {
        wx.showToast({
          title: res.message || '获取用户信息失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.hideLoading()
      console.error('获取用户详情失败:', err)
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      })
    })
  },

  onInput(e) {
    const field = e.currentTarget.dataset.field
    const value = e.detail.value
    
    this.setData({
      [`tempUserInfo.${field}`]: value,
      isEditing: true
    })
  },

  // 保存用户信息
  saveInfo() {
    const { tempUserInfo, userId } = this.data
    
    // 基本验证
    if (!tempUserInfo.realName || tempUserInfo.realName.trim() === '') {
      wx.showToast({
        title: '请输入真实姓名',
        icon: 'none'
      })
      return
    }

    if (!tempUserInfo.phone || tempUserInfo.phone.trim() === '') {
      wx.showToast({
        title: '请输入手机号',
        icon: 'none'
      })
      return
    }

    // 手机号格式验证
    const phoneRegex = /^1[3-9]\d{9}$/
    if (!phoneRegex.test(tempUserInfo.phone)) {
      wx.showToast({
        title: '请输入正确的手机号',
        icon: 'none'
      })
      return
    }

    // 邮箱格式验证（如果填写了邮箱）
    if (tempUserInfo.email && tempUserInfo.email.trim() !== '') {
      const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
      if (!emailRegex.test(tempUserInfo.email)) {
        wx.showToast({
          title: '请输入正确的邮箱格式',
          icon: 'none'
        })
        return
      }
    }

    wx.showLoading({ title: '保存中...' })
    
    // 构建更新数据 - 只包含实体类中存在的字段
    const updateData = {
      id: userId,
      realName: tempUserInfo.realName,
      phone: tempUserInfo.phone,
      email: tempUserInfo.email,
      idCard: tempUserInfo.idCard
    }
    
    console.log('提交的更新数据:', updateData)
    
    api.post('user', path.path.updateUser, updateData).then(res => {
      wx.hideLoading()
      console.log('更新用户信息返回:', res)
      
      if (res.code === 200) {
        // 更新本地存储的用户信息
        const newUserInfo = {
          ...this.data.userInfo,
          ...updateData
        }
        wx.setStorageSync('userInfo', newUserInfo)
        
        wx.showToast({
          title: '保存成功',
          icon: 'success',
          duration: 1500
        })
        
        // 通知上一页更新数据
        const pages = getCurrentPages()
        if (pages.length > 1) {
          const prevPage = pages[pages.length - 2]
          if (prevPage && prevPage.fetchUserInfo) {
            prevPage.fetchUserInfo()
          }
        }
        
        setTimeout(() => {
          wx.navigateBack()
        }, 1500)
      } else {
        wx.showToast({
          title: res.message || '保存失败',
          icon: 'none'
        })
      }
    }).catch(err => {
      wx.hideLoading()
      console.error('保存失败:', err)
      wx.showToast({
        title: '保存失败，请重试',
        icon: 'none'
      })
    })
  },

  // 重置表单
  resetForm() {
    this.setData({
      tempUserInfo: { ...this.data.userInfo },
      isEditing: false
    })
  },

  // 返回上一页
  goBack() {
    if (this.data.isEditing) {
      wx.showModal({
        title: '提示',
        content: '您有未保存的修改，确定要返回吗？',
        confirmColor: '#d81e06',
        success: (res) => {
          if (res.confirm) {
            wx.navigateBack()
          }
        }
      })
    } else {
      wx.navigateBack()
    }
  }
})